package br.com.webhomesites.coleta.view;

import br.com.webhomesites.padrao.view.*;
import br.com.webhomesites.configuracao.utils.ConfiguracaoInstancias;
import br.com.webhomesites.padrao.contracts.IProdutoView;
import br.com.webhomesites.padrao.model.GrupoProdutoModel;
import br.com.webhomesites.padrao.utils.StrategyDocument;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.List;
import javax.swing.JTextField;

public class BombaView extends javax.swing.JInternalFrame {
     
    //construtor da classe. carrega os componentes
    public BombaView() {
        initComponents();        
      
        txtProdutoQuantidade.setHorizontalAlignment(JTextField.RIGHT);
        //txtProdutoSerie.setDocument(new StrategyDocument.DocEndereco().getDocumentoPlano());
        //txtProdutoDescricao.setDocument(new StrategyDocument.DocEndereco().getDocumentoPlano());
        txtProdutoQuantidade.setEnabled(false);
        
//        txtProdutoCodigo.addFocusListener(this);
//        txtProdutoDescricao.addFocusListener(this);
//        txtProdutoQuantidade.addFocusListener(this);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        rgTipo = new javax.swing.ButtonGroup();
        painelCentralProduto = new javax.swing.JPanel();
        labelProdutoDescricao = new javax.swing.JLabel();
        txtProdutoDescricao = new javax.swing.JTextField();
        labelProdutoCodigo = new javax.swing.JLabel();
        labelProdutoSerie = new javax.swing.JLabel();
        txtProdutoSerie = new javax.swing.JTextField();
        txtProdutoCodigo = new javax.swing.JTextField();
        comboProdutoGrupo = new javax.swing.JComboBox();
        labelProdutoTipo = new javax.swing.JLabel();
        comboUnidade = new javax.swing.JComboBox();
        labelTamanho = new javax.swing.JLabel();
        txtProdutoQuantidade = new javax.swing.JTextField();
        labelQuantidade = new javax.swing.JLabel();
        btnNovo = new javax.swing.JButton();
        btnRemover = new javax.swing.JButton();
        btnSalvar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        btnPesquisar = new javax.swing.JButton();
        btnEditar = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);

        painelCentralProduto.setBorder(javax.swing.BorderFactory.createTitledBorder("Cadastro de Bomba"));

        labelProdutoDescricao.setText("Descrição");

        labelProdutoCodigo.setText("Cód.Bomba");

        labelProdutoSerie.setText("Serie");

        comboProdutoGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                comboProdutoGrupoActionPerformed(evt);
            }
        });

        labelProdutoTipo.setText("Grupo");

        comboUnidade.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "10L" }));
        comboUnidade.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                comboUnidadeActionPerformed(evt);
            }
        });

        labelTamanho.setText("Tamanho");

        labelQuantidade.setText("Quantidade");

        javax.swing.GroupLayout painelCentralProdutoLayout = new javax.swing.GroupLayout(painelCentralProduto);
        painelCentralProduto.setLayout(painelCentralProdutoLayout);
        painelCentralProdutoLayout.setHorizontalGroup(
            painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                        .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(labelProdutoCodigo)
                                    .addComponent(txtProdutoCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                                        .addComponent(labelProdutoDescricao)
                                        .addGap(0, 0, Short.MAX_VALUE))
                                    .addComponent(txtProdutoDescricao)))
                            .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                                .addComponent(labelProdutoSerie)
                                .addGap(190, 190, 190)
                                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(comboProdutoGrupo, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelCentralProdutoLayout.createSequentialGroup()
                                        .addComponent(labelProdutoTipo)
                                        .addGap(0, 0, Short.MAX_VALUE)))))
                        .addContainerGap())
                    .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                        .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(txtProdutoSerie)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, painelCentralProdutoLayout.createSequentialGroup()
                                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(labelTamanho)
                                    .addComponent(comboUnidade, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(txtProdutoQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(labelQuantidade))))
                        .addGap(0, 0, Short.MAX_VALUE))))
        );
        painelCentralProdutoLayout.setVerticalGroup(
            painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelProdutoDescricao)
                    .addComponent(labelProdutoCodigo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtProdutoDescricao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtProdutoCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(labelProdutoSerie)
                    .addComponent(labelProdutoTipo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtProdutoSerie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(comboProdutoGrupo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(painelCentralProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                        .addComponent(labelTamanho)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(comboUnidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(painelCentralProdutoLayout.createSequentialGroup()
                        .addComponent(labelQuantidade)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtProdutoQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(172, 172, 172))
        );

        btnNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/document-icon.png"))); // NOI18N
        btnNovo.setMnemonic('n');

        btnRemover.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/delete-icon.png"))); // NOI18N
        btnRemover.setMnemonic('x');

        btnSalvar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/save-icon.png"))); // NOI18N
        btnSalvar.setMnemonic('s');

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/block-icon.png"))); // NOI18N
        btnCancelar.setMnemonic('c');

        btnPesquisar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/search-icon.png"))); // NOI18N
        btnPesquisar.setMnemonic('p');

        btnEditar.setMnemonic('c');
        btnEditar.setText("Editar");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(btnNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnRemover, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnEditar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnPesquisar, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 128, Short.MAX_VALUE))
                    .addComponent(painelCentralProduto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelCentralProduto, javax.swing.GroupLayout.DEFAULT_SIZE, 206, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(btnSalvar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnRemover, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnCancelar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnPesquisar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnEditar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void comboProdutoGrupoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboProdutoGrupoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_comboProdutoGrupoActionPerformed

    private void comboUnidadeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboUnidadeActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_comboUnidadeActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnNovo;
    private javax.swing.JButton btnPesquisar;
    private javax.swing.JButton btnRemover;
    private javax.swing.JButton btnSalvar;
    private javax.swing.JComboBox comboProdutoGrupo;
    private javax.swing.JComboBox comboUnidade;
    private javax.swing.JLabel labelProdutoCodigo;
    private javax.swing.JLabel labelProdutoDescricao;
    private javax.swing.JLabel labelProdutoSerie;
    private javax.swing.JLabel labelProdutoTipo;
    private javax.swing.JLabel labelQuantidade;
    private javax.swing.JLabel labelTamanho;
    private javax.swing.JPanel painelCentralProduto;
    private javax.swing.ButtonGroup rgTipo;
    private javax.swing.JTextField txtProdutoCodigo;
    private javax.swing.JTextField txtProdutoDescricao;
    private javax.swing.JTextField txtProdutoQuantidade;
    private javax.swing.JTextField txtProdutoSerie;
    // End of variables declaration//GEN-END:variables

    
    public void setCodigo(long codigo) {
        this.txtProdutoCodigo.setText((Long.toString(codigo)));
    }

    
    public long getCodigo() {
        return Long.parseLong(txtProdutoCodigo.getText());
    }

    
    public void setDescricao(String descricao) {
        this.txtProdutoDescricao.setText(descricao);
    }

    
    public String getDescricao() {
        return txtProdutoDescricao.getText();
    }

    
    public void setSerie(String serie) {
        this.txtProdutoSerie.setText(serie);
    }

    
    public String getSerie() {
        return txtProdutoSerie.getText();
    }

    
    public void setGrupo(List<GrupoProdutoModel> listaGrupoProduto) {
        comboProdutoGrupo.removeAllItems();
        for (int i = 0; i < listaGrupoProduto.size(); i++) // Percorro o Array List com o For aprimorado.  
        {
            this.comboProdutoGrupo.addItem(listaGrupoProduto.get(i).getDescricao()); // Adiciono os dados.  
        }
    }
    
    
    public String getGrupo() {
        return comboProdutoGrupo.getSelectedItem().toString();
    }
   
    
    public String getComboUnidade() {
        return comboUnidade.getSelectedItem().toString();
    }

    
    public void setComboUnidade(String unidade) {
        this.comboUnidade.setSelectedItem(unidade);
    }

    
    public Double getProdutoQuantidade() {
        return Double.parseDouble(txtProdutoQuantidade.getText().equals("")?"1":(txtProdutoQuantidade.getText().contains(".")?txtProdutoQuantidade.getText().replace(".", "").replace(",", "."):txtProdutoQuantidade.getText().replace(",",".")));
    }

    
    public void setProdutoQuantidade(String txtProdutoQuantidade) {
        this.txtProdutoQuantidade.setText(txtProdutoQuantidade);
    }

    
    public void packAndShow() {
        //this.pack();  
        ConfiguracaoInstancias.getDesktop().getDesktop().add(this);
        this.setVisible(true);
    }

    
    public void clearFields() {
        Component[] componentes = this.painelCentralProduto.getComponents();  
          
        for (int i = 0; i < componentes.length; i++) {  
            if (componentes[i] instanceof JTextField) {  
                JTextField field = (JTextField)componentes[i];  
                field.setText("");  
            }  
        }  
    }

    
    public void enableTxtProdutoCodigo(boolean arg) {
        this.txtProdutoCodigo.setEnabled(arg);
    }

    
    public void enableTxtProdutoDescricao(boolean arg) {
        this.txtProdutoDescricao.setEnabled(arg);
    }

    
    public void enableTxtProdutoSerie(boolean arg) {
        this.txtProdutoSerie.setEnabled(arg);
    }

    
    public void enableComboProdutoTipo(boolean arg) {
        //this.txtProdutoSenha.setEnabled(arg);
    }
   
    
    public void enableTxtProdutoQuantidade(boolean arg) {
        this.txtProdutoQuantidade.setEnabled(arg);
    }
    
    
    public void enableBtnAlterar(boolean arg) {
        this.btnEditar.setEnabled(arg);
    }

    
    public void enableBtnRemover(boolean arg) {
        this.btnRemover.setEnabled(arg);
    }

    
    public void enableBtnCancelar(boolean arg) {
        this.btnCancelar.setEnabled(arg);
    }

    
    public void enableBtnSalvar(boolean arg) {
        this.btnSalvar.setEnabled(arg);
    }

    
    public void enableBtnInserir(boolean arg) {
        this.btnNovo.setEnabled(arg);
    }

    
    public void setInserirActionListener(ActionListener listener) {
        this.btnNovo.addActionListener(listener); 
    }    
    
    
    public void setRemoverActionListener(ActionListener listener) {
        this.btnRemover.addActionListener(listener); 
    }

    
    public void setAlterarActionListener(ActionListener listener) {
        this.btnEditar.addActionListener(listener);
    }

    
    public void setCancelarActionListener(ActionListener listener) {
        this.btnCancelar.addActionListener(listener); 
    }
    
    
    public void setBuscaAvancadaActionlistener(ActionListener listener) {
        this.btnPesquisar.addActionListener(listener);
    }

    
    public void setSalvarActionListener(ActionListener listener) {
        this.btnSalvar.addActionListener(listener); 
    }

    
    public void setBtnSairActionListener(ActionListener listener) {
        //this.btnSair.addActionListener(listener); 
    }

    
    public void setGrupo(String grupo) {
        comboProdutoGrupo.setSelectedItem(grupo);
    }
  
    
    public void focusLost(FocusEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

}
